#include "state.h"

#include "context.h"

#include <iostream>

/**
 * @brief 基础游戏功能
 *
 * @param player
 */
void AbstractLevel::play(Player *player)
{
    std::cout << player->m_name << " play permission denied" << std::endl;
}

/**
 * @brief 加倍得分
 *
 * @param player
 */
void AbstractLevel::doubleScore(Player *player)
{
    std::cout << player->m_name << " double score permission denied" << std::endl;
}

/**
 * @brief 换牌功能
 *
 * @param player
 */
void AbstractLevel::changeCards(Player *player)
{
    std::cout << player->m_name << " change cards permission denied" << std::endl;
}

/**
 * @brief 记牌功能
 *
 * @param player
 */
void AbstractLevel::cardWriting(Player *player)
{
    std::cout << player->m_name << " card writing permission denied" << std::endl;
}
/********************************* PrimaryLevel *********************************/
void PrimaryLevel::play(Player *player)
{
    std::cout << player->m_name << " play game" << std::endl;
}
/********************************* SecondaryLevel *********************************/
void SecondaryLevel::play(Player *player)
{
    std::cout << player->m_name << " play game" << std::endl;
}

void SecondaryLevel::doubleScore(Player *player)
{
    std::cout << player->m_name << " double score" << std::endl;
}
/********************************* ProfessionalLevel *********************************/
void ProfessionalLevel::play(Player *player)
{
    std::cout << player->m_name << " play game" << std::endl;
}

void ProfessionalLevel::doubleScore(Player *player)
{
    std::cout << player->m_name << " double score" << std::endl;
}

void ProfessionalLevel::changeCards(Player *player)
{
    std::cout << player->m_name << " change cards" << std::endl;
}

/********************************* FinalLevel *********************************/
void FinalLevel::play(Player *player)
{
    std::cout << player->m_name << " play game" << std::endl;
}

void FinalLevel::doubleScore(Player *player)
{
    std::cout << player->m_name << " double score" << std::endl;
}

void FinalLevel::changeCards(Player *player)
{
    std::cout << player->m_name << " change cards" << std::endl;
}

void FinalLevel::cardWriting(Player *player)
{
    std::cout << player->m_name << " card writing" << std::endl;
}